                                     
#include <bibliotecas.h>

#ifndef __CADASTRO_H__
#define __CADASTRO_H__ 1

class COLUNAS : public Gtk::TreeModel::ColumnRecord
	{
	public: 
		/** */
		COLUNAS ();
		/** */
		~COLUNAS ();
		Gtk::TreeModelColumn<int> reg;/**<*/
		Gtk::TreeModelColumn<string> data;/**<*/
		Gtk::TreeModelColumn<string> contador;/**<*/
		Gtk::TreeModelColumn<Glib::ustring> descricao;/**<*/
		Gtk::TreeModelColumn<Glib::ustring> campo[5];/**<*/
	};

/**
 * Classe Cadastro
 * Responsavel pela criação das funcionalidades do menu apiarios e submenus cadastro, região, planilha, históricos
 */
class CADASTRO
	{
	public:
		/**Construtor da classe CADASTRO*/
		CADASTRO(int, bool *, BANCOPG *); 
		/**Destrutor da Classe CADASTRO*/
		~CADASTRO(); 
		Gtk::Window Apiarios;/**<Variaveis responsaveis pela criação das janelas dos submenus*/
		Gtk::Window *Colmeias;/**<Variaveis responsaveis pela criação das janelas dos submenus*/
		Gtk::Window *Planilhas;/**<Variaveis responsaveis pela criação das janelas dos submenus*/
		Gtk::Window Regioes;/**<Variaveis responsaveis pela criação das janelas dos submenus*/
		Gtk::Window Siglas;/**<Variaveis responsaveis pela criação das janelas dos submenus*/
		Gtk::Window *Abelha_Rainha;/**<Variaveis responsaveis pela criação das janelas dos submenus*/
		Gtk::Window Historico;/**<Variaveis responsaveis pela criação das janelas dos submenus*/
		Gtk::Window Florada;/**<Variaveis responsaveis pela criação das janelas dos submenus*/
		Gtk::Window Tabela_Apiario; /**<Variaveis responsaveis pela criação das janelas dos submenus*/
		/** */
		void carregar_primeiro();
		/** */
		bool status_janela();
		bool *controle_apiario;/**<*/

	private:   
		BANCOPG *conexao;/**<*/
		int janela;/**<*/
		int cont;/**<*/
		int cont_i;/**<*/
		int cod_florada;/**<*/
		int cod_reg;/**<*/
		int tipo_planilha;/**<*/
		int cod_api;/**<*/
		int cod_abelha;/**<*/
		int total;/**<*/
		int total_registros;/**<*/
		int total_colunas;/**<*/
		int posicao;/**<*/
		int acao;/**<*/
		int controle;/**<*/
		int controleaux;/**<*/
		int cod_tp;/**<*/
		int cod_st;/**<*/
		int acao_abelha;/**<*/
		int cod_rgmae;/**<*/
		string 	id_selecionado;/**<*/
		string data_form;/**<*/
		string id_colmeia;/**<*/
		char *cod_apiario; /**<para update das planilhas e carregar apiario na entry completion da planilha*/
		int id_col;/**<*/
		int len_ant, entry_ativa, pos_entry;/**<*/
		int cod_apiarioar;/**<*/
		bool botao_cancelar, botao_consultar, consulta_registro, visualizacao, visualizacaosiglas,visualizacaocolmeias;
		bool controle_visualizacao[7];
		int flag, total_geral,limite,offset,pagina,paginas, pos_atual, total_apicol, pagina_apicol;
		void janelas();
		void listagem_box(int);
		void troca_pagina(int);
		void contar_dados();
		void novo();
		void edicao();
		void editar_registro();
		void armazenar_registro();
		void excluir();
		void prepara_box_cliente();
		void gerar_codigo();
		void buscar_registro();
		void cancelar();
		void carregar_regiao();
		void checar_nome(int);
		void navega_apicol(int);
		void configuracao_data(int);
		void relatorio_planilha();
		void set_posicao(Gtk::Entry * , int );
		void setar_focus(Gtk::Window *, Gtk::Widget *);
		void Carregou_Janela();
		void Fechou_Janela(int);
		void maiusculo(int);
		void tabela_apiarios();
		void prepara_box_tabela();
		void selecionado(const Gtk::TreeModel::Path& path,Gtk::TreeViewColumn* column);
			
		Gtk::Fixed tabela_apiario, tabela_siglas, tabela_colmeias, tabela_planilhas, tabela_rainhas;
			
		Gtk::Label labapinovo,labNum, labNome, labRegiao,labSubreg, labLoca, labData, labFlorada, labObs, labCons, labMunicipio, labSiglas,enttotalcolmeias;
		Gtk::Label labCcolmeia,labCdatafor,labCtipo, labCatividade,labCobs,labCbusca;
		Gtk::Label labPnum, labPdata, labPnumap, labPnome, labPregiao, labPhrini, labPhrfim, labPtipo, labPobs, labPplannum; 
		Gtk::Label labarrg, labarcodatual, labarcodnovo, labardatanas, labardatafec,labardatarev,labargera,labarrgmae,labarObs, labarconsultar, labarcolmeia;
		Gtk::Label lab_tbapi, lab_florada;
				
		Gtk::Entry entNum, entNome, entLoca, entData, entObs, entConsulta, entCons, entNav, entSubreg, entSiglas, entMunicipio, entNavsiglas;
		Gtk::Entry entNavregioes, entNavplanilhas,entNavcolmeias,entNavrainhas, entCcolmeia,entCdatafor,entCobs,entCbusca;
		Gtk::Entry entPnum, entPdata, entPnumap, entPnome, entPhrini, entPhrfim, entPregiao, entPobs, entPplannum, entRLocalizar;
		Gtk::Entry entarrg, entarcodatual, entarcodnovo, entardatanas, entardatafec,entardatarev,entargera,entarrgmae, entarObs, entarconsultar;
		Gtk::Entry navegacaoapiario, enttab_apiario, ent_Florada;

		Gtk::Entry  entRegiao, entPApiario, entSiglasPreencher, CBRcolmeia;
		Gtk::Entry ent_ARloca;

		Gtk::Toolbar tb_apiario, tb_regioes, tb_siglas, tb_colmeias, tb_planilhas, tb_rainhas, tb_florada;
			
		Gtk::ToolButton  tbf_novo, tbf_salvar,tbf_alterar, tbf_excluir, tbf_cancelar;
		Gtk::ToolButton  tba_novo, tba_salvar,tba_alterar, tba_excluir, tba_cancelar, tbs_novo,tbs_salvar, tbs_alterar, tbs_excluir,tbs_cancelar;
		Gtk::ToolButton  tbr_novo, tbr_salvar, tbr_alterar, tbr_excluir,tbr_cancelar, tbr_localizar;
		Gtk::ToolButton  tbc_novo, tbc_salvar, tbc_alterar, tbc_excluir, tbc_cancelar, tbp_novo, tbp_salvar, tbp_alterar, tbp_excluir,tbp_cancelar, tbp_imprimir;
		Gtk::ToolButton  tbar_novo, tbar_salvar, tbar_alterar, tbar_excluir, tbar_cancelar;	
		Gtk::SeparatorToolItem tba_separador[4], tbs_separador[4], tbr_separador[4],tbc_separador[4],tbp_separador[4], tbar_separador[4], tbf_separador[4];

		Glib::RefPtr<Gtk::ListStore> ponteiro_lista, ponteiro_tabela;	

		typedef std::map<int, Glib::ustring> type_actions_map;
 		type_actions_map m_CompletionActions;

			
		//Teste do regiao
		Glib::ustring dados[20][5];		
		COLUNAS Colunas_Cliente;
		Gtk::TreeView listaCliente, lista_tbap;
		Gtk::ScrolledWindow scrollCliente, scroll_tbap;			
		Gtk::Label labPaginaCliente;		

			
	protected:
	   //Cadastro Apiários
		Gtk::VBox APrincipal, CPrincipal, PPrincipal, RPrincipal, AVConsulta, SPrincipal, ARPrincipal, FPrincipal, VB_tbap;
		Gtk::HBox AMenu,BApi_col, ADados, AConsulta, ANavega, CMenu, CDados,CConsulta,CNavega, RMenu, RLocaliza, SMenu, SDados, SNavega, RNavega, FMenu, FMeio, FFim, HB_tbap;
		Gtk::HBox PMenu,PDados,Pconsulta,PNavega, ARMenu,ARDados,ARconsulta,ARNavega ; 
		Gtk::MenuBar *Amenu_barra, *Cmenu_barra, *Pmenu_barra, *Rmenu_barra, *Smenu_barra, *ARmenu_barra;
		Gtk::ComboBoxText CSiglas, CAtividade,  CTipo, CBPTipo, CBPapiario, CBRainha;
		Gtk::ComboBoxText CFlorada;
		//Gtk::ComboBoxEntryText CRegiao, CBTApiario;
		Gtk::ScrolledWindow ScrollObs;
		Gtk::ScrolledWindow ScrollPlanObs, ScrollarObs, ScrollCobs;
  		Gtk::TextView TObs,RainhaObs;
		Gtk::TextView PlanObs, ColObs;
									
		Glib::RefPtr<Gtk::TextBuffer> PObs1 ; //Box de texto para OBS.
		Glib::RefPtr<Gtk::TextBuffer> PObs2, PObs3, PObs4;
		Gtk::TextIter inicial, final, iter;
			
		Gtk::Button BConsultar, BTabela, BConsultoutro, BCconsultar,BPconsultar, BNavini, BNavant, BNavprox, BNavfim, SNavini, SNavant, SNavprox, SNavfim, RNavini, RNavant, RNavprox, RNavfim;
		Gtk::Button BarConsultar, ARNavini, ARNavant, ARNavprox, ARNavfim, BRlocaliza;	
		Gtk::Button PNavini, PNavant, PNavprox, PNavfim, CNavini, CNavant, CNavprox, CNavfim;
		Gtk::Button ACNavini,ACNavant,ACNavprox,ACNavfim;
		Gtk::Image *AIni, *AAnt, *AProx, *AFim, *SIni ,*SAnt ,*SProx ,*SFim, *RIni ,*RAnt ,*RProx ,*RFim ; //Inserção de figuras usando ponteiros
		Gtk::Image *PIni, *PAnt, *PProx, *PFim, *CIni, *CAnt, *CProx, *CFim, *ARIni, *ARAnt, *ARProx, *ARFim;
		Gtk::Image *ACImg;
		Gtk::Image *BConsultarapi, *BConsultarcol, *BPconsultarplan, *Bconsultarar, *BRlocalizarimage;
		COLUNAS arvore_reg;
		Glib::RefPtr<Gtk::ListStore> arvore_ref;
		Gtk::TreeModel::Row celula;

		/** */
		string codigo_rainha(int, string, string);
		void sair (Gtk::Window *);
		void aplicar_mascara(string, int, Gtk::Entry*);
		void checar_digito(Gtk::Entry *);
		void sel_colmeia();

};

#endif /* __CADASTRO_H__ */
